package Servlets;

import ControlEscolar.DAOS.ControlEscolarDAO;
import ControlEscolar.DTOS.AlumnoDTO;
import ControlEscolar.DTOS.CalificacionesDTO;
import ControlEscolar.DTOS.CicloEscolarDTO;
import ControlEscolar.DTOS.ControlEscolarPrincipal;
import ControlEscolar.DTOS.MateriaDTO;
import ControlEscolar.DTOS.ParcialDTO;
import ControlEscolar.DTOS.ParcialRegistradoDTO;
import ControlEscolar.DTOS.ProfesorDTO;
import DTOS.sistema.RedireccionPopUpDTO;
import Herramientas.Herramientas;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet(name = "ControlEscolar", urlPatterns = {"/ControlEscolar"})
public class ControlEscolar extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        try (PrintWriter out = response.getWriter()) {
            HttpSession session = request.getSession();

            String funcion = request.getParameter("funcion");

            switch (funcion) {
                case "ciclos":
                    this.ciclos(request, response, session);
                    break;
                case "nuevoCiclo":
                    this.nuevoCiclo(request, response, session);
                    break;
                case "nuevoCicloGuardarProgreso":
                    this.nuevoCicloGuardarProgreso(request, response, session);
                    break;
                case "borrarCiclo":
                    this.borrarCiclo(request, response, session);
                    break;
                case "nuevaMateria":
                    this.nuevaMateria(request, response, session);
                    break;
                case "nuevaMateriaGuardar":
                    this.nuevaMateriaGuardar(request, response, session);
                    break;
                case "registroMaterias":
                    this.registroMaterias(request, response, session);
                    break;
                case "borrarMateriaCiclo":
                    this.borrarMateria(request, response, session);
                    break;
                case "administradorAlumnos":
                    this.administradorAlumnos(request, response, session);
                    break;
                case "nuevoAlumno":
                    this.nuevoAlumno(request, response, session);
                    break;
                case "nuevoAlumnoGuardar":
                    this.nuevoAlumnoGuardar(request, response, session);
                    break;
                case "alumnoEditar":
                    this.alumnoEditar(request, response, session);
                    break;
                case "ingresoCalificacionesPrincipal":
                    this.ingresoCalificacionesPrincipal(request, response, session);
                    break;
                case "ingresoCalificaciones":
                    this.ingresoCalificaciones(request, response, session);
                    break;
                case "materiasCalificacion":
                    this.materiasCalificacion(request, response, session);
                    break;
                case "calificacionesGuardar":
                    this.calificacionesGuardar(request, response, session);
                    break;
                case "consultaCalificaciones":
                    this.consultaCalificaciones(request, response, session);
                    break;

                default:
                    out.println("<center>error no hay funcion para el desencadenador: <b>" + funcion + "</b> </center>");
                    break;
            }
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

    /**
     * SERVLET QUE MUESTRA EL MENU PRINCIPAL DE CICLOS
     *
     * @param request
     * @param response
     * @param session
     */
    public void ciclos(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();
        Vector vCiclos = new Vector();
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        vCiclos = controlEscolarDAO.ciclosRegistrados();
        sessionEscuela.setvCiclos(vCiclos);

        session.setAttribute("sessionEscuela", sessionEscuela);

// sessionEscuela.vCiclos
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/adminCiclosEscolares.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * MUESTRA LA INTERFAZ PARA UN NUEVO CICLO
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevoCiclo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        Vector vCiclosDisponibles = controlEscolarDAO.ciclosDisponibles();
        sessionEscuela.setvCiclos(vCiclosDisponibles);

        sessionEscuela.setBanderaControl(0);
        sessionEscuela.setCicloEscolar(new CicloEscolarDTO());
        session.setAttribute("sessionEscuela", sessionEscuela); // sessionEscuela.vCiclos
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/nuevoCiclo.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * servlet para recuperar los avances de la interfaz del cico y continuar
     * cargando las materias del respectivo cilo
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevoCicloGuardarProgreso(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        ControlEscolarDAO controlDAO = new ControlEscolarDAO();

        Herramientas tools = new Herramientas();

        CicloEscolarDTO nuevoCiclo = new CicloEscolarDTO();

        int numero = Integer.parseInt(request.getParameter("grado"));                      // grado = numero de ciclos
        String nombreCiclo = tools.validaEntrdaString(request.getParameter("nombreCiclo"));
        String descripcionCiclo = tools.validaEntrdaString(request.getParameter("descCiclo"));

        nuevoCiclo.setNumero(numero);
        nuevoCiclo.setNombre(nombreCiclo);
        nuevoCiclo.setDescripcion(descripcionCiclo);

        sessionEscuela.setBanderaControl(1);
        controlDAO.insertarNuevoCiclo(nuevoCiclo); // se inserta el ciclo

        // cambio de estado de disponibilidad del ciclo 
        controlDAO.cambioEstadoCicloNoDisponible(nuevoCiclo.getNumero());

        CicloEscolarDTO cicloConsultado = new CicloEscolarDTO();
        cicloConsultado = controlDAO.cicloEscolarDTO(numero);
        // consulta por ciclo por eso no deben de haber ciclos repetidos limitar el combolist a solo disponibles 

        Vector vMateriasCiclo = controlDAO.materiasTodasXCiclo(cicloConsultado.getId());
        sessionEscuela.getCicloEscolar().setMaterias(vMateriasCiclo);

        sessionEscuela.setCicloEscolar(cicloConsultado);
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/nuevoCiclo.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * metodo servlet que hace borrado de un cilo y las materias registradas en
     * el ciclo
     *
     * @param request
     * @param response
     * @param session
     */
    public void borrarCiclo(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int cicloID = Integer.parseInt(request.getParameter("cicloID"));
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        controlEscolarDAO.borrarCiclo(cicloID);

        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar?funcion=ciclos");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * MUESTRA LA INTERFAZ PARA CREAR UNA NUEVA MATERIA
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaMateria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        ControlEscolarDAO controlDAO = new ControlEscolarDAO();

        Herramientas tools = new Herramientas();
        int cicloEscolarID = Integer.parseInt(request.getParameter("cicloID"));
        sessionEscuela.setCicloEscolarApuntador(cicloEscolarID);
        // sessionEscuela,cicloEscolarApuntador
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/materia.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * ESTE METODO SERVLET GUARDA LA MATERIA DE UN CICLO Y RECARGA LA INTERFAZ
     * CON EL VECTOR DE MATERIAS
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevaMateriaGuardar(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        Herramientas cajaHerramientas = new Herramientas();
        MateriaDTO materiaEntrante = new MateriaDTO();

        materiaEntrante.setCicloID(Integer.parseInt(request.getParameter("cicloID")));
        materiaEntrante.setNombreMateria(cajaHerramientas.validaEntrdaString(request.getParameter("nombreMateria")));

        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        controlEscolarDAO.insertarMateria(materiaEntrante);

        Vector vMateriasCiclo = controlEscolarDAO.materiasTodasXCiclo(materiaEntrante.getCicloID());
        sessionEscuela.getCicloEscolar().setMaterias(vMateriasCiclo);

        RedireccionPopUpDTO redireccion = new RedireccionPopUpDTO();

        redireccion.setServicio("./ControlEscolar?funcion=registroMaterias"); // debera ser servicio auxiliar que recargue la interfaz 

        session.setAttribute("red", redireccion);
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher despachador = request.getRequestDispatcher("./popUpSalida.jsp");
        try {
            despachador.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * METODO SERVLET AUXILIAR PARA RECARGA DE LA INTERFAZ
     *
     * @param request
     * @param response
     * @param session
     */
    public void registroMaterias(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher despachador = request.getRequestDispatcher("./ControlEscolar/nuevoCiclo.jsp");
        try {
            despachador.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * metodo servlet para borrar una maetria en caso de que este el titulo
     * registrado de manera incorrecta
     *
     * @param request
     * @param response
     * @param session
     */
    public void borrarMateria(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

        int idmateriaCiclo = Integer.parseInt(request.getParameter("matID"));
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");

        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        controlEscolarDAO.borrarMateriaCiclo(idmateriaCiclo);

        Vector vMaterias = controlEscolarDAO.materiasTodasXCiclo(sessionEscuela.getCicloEscolarApuntador());
        sessionEscuela.getCicloEscolar().setMaterias(vMaterias);

        session.setAttribute("sessionEscuela", sessionEscuela);

        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar?funcion=registroMaterias");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * metodos servlet administraodor de alumnos
     *
     * @param request
     * @param response
     * @param session
     */
    public void administradorAlumnos(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        Vector alumnos = new Vector();
        alumnos = controlEscolarDAO.Alumnos();
        sessionEscuela.setVAlumnos(alumnos);
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/AdministradorAlumnos.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * metodo servler para crear un nuevo alumno
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevoAlumno(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        System.out.println("matricula generada " + controlEscolarDAO.matriculaSistemaAlumno());

        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/nuevoAlumno.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * METODO SERVLET PARA RECUPERAR LOS DATOS DEL NUEVO ALUMNO
     *
     * @param request
     * @param response
     * @param session
     */
    public void nuevoAlumnoGuardar(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

        Herramientas tools = new Herramientas();

        int idAlumno = 0;
        if (request.getParameter("idAlumno").equals("")
                || request.getParameter("idAlumno").length() == 0
                || request.getParameter("idAlumno") == null) {
            idAlumno = 0;
        } else {
            idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
        }
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        String nombreAlumno = tools.validaEntrdaString(request.getParameter("nombreAlumno"));
        String apPat = tools.validaEntrdaString(request.getParameter("appat"));
        String apMat = tools.validaEntrdaString(request.getParameter("apmat"));
        String nombreTutor = tools.validaEntrdaString(request.getParameter("nombreTutor"));
        String fechaNacimiento = tools.validaEntrdaString(request.getParameter("fenac")); // se tiene que validar y pasar a formato sql
        String grado = tools.validaEntrdaString(request.getParameter("grado"));
        String grupo = tools.validaEntrdaString(request.getParameter("grupo"));
        String direccion = tools.validaEntrdaString(request.getParameter("direccion"));
        String telefono = tools.validaEntrdaString(request.getParameter("tel"));
        String info = tools.validaEntrdaString(request.getParameter("info"));
        String matricula = controlEscolarDAO.matriculaSistemaAlumno();

        AlumnoDTO al = new AlumnoDTO();
        al.setId(idAlumno);
        al.setNombre(nombreAlumno);
        al.setAppat(apPat);
        al.setApmat(apMat);
        al.setNombreTutor(nombreTutor);
        al.setFenac(fechaNacimiento);
        al.setGrado(Integer.parseInt(grado));
        al.setGrupo(grupo);
        al.setDireccion(direccion);
        al.setTelefono(telefono);
        al.setInfo(info);
        al.setMatricula(matricula);

        if (al.getId() == 0) {

            controlEscolarDAO.insertarNuevoAlumno(al);
        } else {
            controlEscolarDAO.editarAlumno(al);
        }
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar?funcion=administradorAlumnos");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * metodo servlet que carga la interfaz del alumno para editarla
     *
     * @param request
     * @param response
     * @param session
     */
    public void alumnoEditar(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        int idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
        AlumnoDTO alumno = new AlumnoDTO();
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();
        alumno = controlEscolarDAO.alumnoXID(idAlumno);
        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuela");
        sessionEscuela.setAlumno(alumno);
        session.setAttribute("sessionEscuela", sessionEscuela);

        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/nuevoAlumno.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * METODO SERVLET QUE MUESRTA LA INTERFAZ PRINCIPAL DE ASIGNACION DE
     * CALIFICACIONES
     *
     * @param request
     * @param response
     * @param session
     */
    public void ingresoCalificacionesPrincipal(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();
        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/interfazCalificaciones.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * METODO INGRESO DE CALIFICACIONES
     *
     * @param request
     * @param response
     * @param session
     */
    public void ingresoCalificaciones(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

        int grado = Integer.parseInt(request.getParameter("grado"));
        String grupo = request.getParameter("grupo");
        int parcial = Integer.parseInt(request.getParameter("parcial"));

        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();

        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        Vector alumno = controlEscolarDAO.alumnosXGrupo(grado, grupo);

        sessionEscuela.setGradoApuntador(grado + "");
        sessionEscuela.setGrupoApuntador(grupo);
        sessionEscuela.setParcialApuntador(parcial + "");

        sessionEscuela.setVAlumnos(alumno);

        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher d = request.getRequestDispatcher("./ControlEscolar/interfazCalificaciones.jsp");
        try {
            d.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * muestra en pop up la ventana emergente
     *
     * @param request
     * @param response
     * @param session
     */
    public void materiasCalificacion(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        int idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
        int idParcial = Integer.parseInt(request.getParameter("parcial"));

        AlumnoDTO alumno = controlEscolarDAO.alumnoXID(idAlumno);
        sessionEscuela.setAlumno(alumno);
        sessionEscuela.setParcialApuntador(idParcial + "");

        Vector materiasAsignadas = new Vector();
        materiasAsignadas = controlEscolarDAO.materiasTodasXCiclo(alumno.getGrado()); // grado es lo mismo que ciclo
        sessionEscuela.setMateriasAlumno(materiasAsignadas);

        session.setAttribute("sessionEscuela", sessionEscuela); // para la vista 
        session.setAttribute("sessionEscuelaEscrituraInterna", sessionEscuela); // para la lectura interna del vector de materias por seguridad

        RequestDispatcher dispatch = request.getRequestDispatcher("./ControlEscolar/calificaciones.jsp");
        try {
            dispatch.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * recupera las calificaciones del partner aluno ingresadas en la interfaz
     *
     * @param request
     * @param response
     * @param session
     */
    public void calificacionesGuardar(HttpServletRequest request, HttpServletResponse response, HttpSession session) {

        ControlEscolarPrincipal sessionEscuela = (ControlEscolarPrincipal) session.getAttribute("sessionEscuelaEscrituraInterna");
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        AlumnoDTO alumno = sessionEscuela.getAlumno();
        Vector materiasAlumno = sessionEscuela.getMateriasAlumno();

        Iterator it = materiasAlumno.iterator();
        while (it.hasNext()) {
            MateriaDTO materia = (MateriaDTO) it.next();

            double promedioMateria = Double.parseDouble(request.getParameter(alumno.getId() + "_" + sessionEscuela.getParcialApuntador() + "_" + materia.getId()));

            CalificacionesDTO calificacionesDTO = new CalificacionesDTO();
            calificacionesDTO.setAlumnoId(alumno.getId());
            calificacionesDTO.setParcial(Integer.parseInt(sessionEscuela.getParcialApuntador()));
            calificacionesDTO.setMateriaId(materia.getId());
            calificacionesDTO.setCiclo(materia.getCicloID());
            calificacionesDTO.setCalificacion(promedioMateria);

            controlEscolarDAO.insertaCalificacion(calificacionesDTO);

        }

        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher dispatch = request.getRequestDispatcher("./ControlEscolar/calificaciones.jsp");

        try {
            dispatch.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    /**
     * CONSULTA DE CALIFICACIONES MATRICULA DEL ALUMNO
     *
     * @param request
     * @param response
     * @param session
     */
    public void consultaCalificaciones(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
        ControlEscolarPrincipal sessionEscuela = new ControlEscolarPrincipal();
        //  System.out.println("entro al modulo");
        int idAlumno = Integer.parseInt(request.getParameter("idAlumno"));
        ControlEscolarDAO controlEscolarDAO = new ControlEscolarDAO();

        AlumnoDTO alumno = controlEscolarDAO.alumnoXID(idAlumno);

        Vector parcialesAlumno = controlEscolarDAO.parcialEsRegistradosAlumno(alumno.getId(), alumno.getGrado());
        System.out.println("1");
        System.out.println("parciales registrados " + parcialesAlumno.size());

        Vector parcialesCompletosAlumno = new Vector();

        for (int x = 0; x < parcialesAlumno.size(); x++) {
            int i = Integer.parseInt(parcialesAlumno.elementAt(x).toString());
            ParcialDTO p = new ParcialDTO();
            p.setnParcial(i);
            p.setCalificacionesParcial(controlEscolarDAO.calificacionesParcial(i, alumno));
            parcialesCompletosAlumno.add(p);
        }

        sessionEscuela.setCalificaciones(parcialesCompletosAlumno);

        session.setAttribute("sessionEscuela", sessionEscuela);
        RequestDispatcher dispatch = request.getRequestDispatcher("./ControlEscolar/parciales.jsp");
        try {
            dispatch.forward(request, response);
        } catch (ServletException | IOException ex) {
            Logger.getLogger(ControlEscolar.class.getName()).log(Level.SEVERE, null, ex);
        }

    }
}
